package lambda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class LambdaDemo {
    public static void main(String[] args) {

       // lambda表达式
        /**
         * lambda：面向函数是编程
         * 语法：（参数列表）->{
         *     方法体
         * }
         * 源代码中有@FunctionalInterface提示的都是函数式，可以用lambda表达式
         * 当接口中只有一个抽象方法才能使用lambda表达式创建
         */
        List<String> list = new ArrayList<>();
        //匿名内部类创建比较器的方法：
//         Comparator<String> c1=new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                return o1.length()-o2.length();//字多的靠后
//                // return o2.length()-o1.length();//字少的靠后
//            }
//        };
     //   改成lambda创建：可以自动识别你调用的方法
        Comparator<String> c1=(String o1, String o2)->{
                return o1.length()-o2.length();//字多的靠后
            };
        //在lambda表达式中参数列表可以忽略不写
        Comparator<String> c2=( o1,  o2)->{
            return o1.length()-o2.length();//字多的靠后
        };
        //如果放方法体里面只有一句代码可以忽略大括号，如果有返回值类型，retrun也必须忽略不写
        Comparator<String> c3=(o1,o2)-> o1.length()-o2.length();
    }
}
